const fs = require('fs');
const path = require('path');
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let targetDir = '';

function showMenu() {
  console.log('文件操作系统菜单:');
  console.log('1. 创建文件夹 (格式: mkdir 文件夹名)');
  console.log('2. 创建文件 (格式: touch 文件名)');
  console.log('3. 删除文件 (格式: delete 文件名)');
  console.log('q. 退出');
} 

showMenu();

rl.on('line', (input) => {
  if (input === 'q') {
    rl.close();
    return;
  }
  
  if (input.startsWith('mkdir ')) {
    // 创建文件夹
    const dirName = input.substring(6).trim();
    targetDir = path.join(__dirname, dirName);
    
    fs.mkdir(targetDir, { recursive: true }, (err) => {
      if (err) {
        console.error('创建文件夹失败:', err);
        process.exit(1);
      }
      console.log("文件夹 " + dirName + " 创建成功！");
      showMenu();
    });
  } else if (input.startsWith('touch ')) {
    // 创建文件
    const fileName = input.substring(6).trim();
    const filePath = path.join(targetDir, fileName);
    
    // 检查文件是否存在后再创建
    fs.access(filePath, fs.constants.F_OK, (err) => {
      if (!err) {
        console.log("文件 " + fileName + " 已存在！");
        showMenu();
        return;
      }
      
      fs.writeFile(filePath, 'hello node', (err) => {
        if (err) {
          console.error('创建文件失败:', err);
          process.exit(1);
        }
        console.log("文件 " + fileName + " 创建成功！");
        showMenu();
      });
    });
  } else if (input.startsWith('delete ')) {
    // 删除文件
    const fileName = input.substring(7).trim();
    const filePath = path.join(targetDir, fileName);
    
    fs.unlink(filePath, (err) => {
      if (err) {
        console.error('删除文件失败:', err);
        process.exit(1);
      }
      console.log("文件 " + fileName + " 删除成功！");
      showMenu();
    });
  } else {
    console.log('无效命令，请按格式输入');
  }
});

rl.on('close', () => {
  console.log('程序退出');
  process.exit(0);
});